package schema

import "errors"

// EnterpriseVisit 企业来访
type EnterpriseVisit struct {
	ID                   int64  `bson:"_id"`                    //	mongodb:id
	RecordID             string `bson:"record_id"`              //	uuid
	PersonnelName        string `bson:"personnel_name"`         //	来访人员
	ContractTel          string `bson:"contract_tel"`           //	联系电话
	FromEnterprise       string `bson:"from_enterprise"`        //	来访单位名称
	VisitingEnterpriseID string `bson:"visiting_enterprise_id"` //	访问单位
	PersonnelTotal       int    `bson:"personnel_total"`        //	来访人员总数
	MainContent          string `bson:"main_content"`           //	来访事由
	StartTime            int64  `bson:"start_time"`             //	来访开始时间
	EndTime              int64  `bson:"end_time"`               //	来访结束时间
	ParkNodeID           string `bson:"park_node_id"`           //	到访门牌节点id
	SendTimes            int    `bson:"send_times"`             //	发送短信次数(每发送一次增加一次)
	//	企业管理员参照当前时间和来访约定时间修改此状态
	Status int `bson:"status"` //	状态1->管理员未操作作废2->管理员操作作废(取消来访)
	//	门禁系统参照当前时间和约定时间修改此状态
	IsCome  int    `bson:"is_come"` //	是否到访0->门禁未收到二维码(未到访)1->门禁收到二维码(到访)
	Creator string `bson:"creator"` //	创建人id
	Created int64  `bson:"created"` //	创建时间戳
	Deleted int64  `bson:"deleted"` //	删除时间戳
}

// EVCParams 企业来访-添加创建参数
type EVCParams struct {
	PersonnelName  string `json:"personnel_name"`  //	来访人员
	ContractTel    string `json:"contract_tel"`    //	联系电话
	FromEnterprise string `json:"from_enterprise"` //	来访单位
	PersonnelTotal int    `json:"personnel_total"` //	来访人员总数
	MainContent    string `json:"main_content"`    //	来访事由
	ParkNodeID     string `json:"park_node_id"`    //	到访门牌节点
	StartTime      int64  `json:"start_time"`      //	来访开始时间
	EndTime        int64  `json:"end_time"`        //	来访结束时间
	AddFrequent    int    `json:"add_frequent"`    //	是否添加常用访客0->不添加 1->添加
}

// Validate 参数校验方法
func (a *EVCParams) Validate() error {
	if a.ParkNodeID == "" {
		return errors.New("参数park_id不能为空")
	}
	if a.PersonnelName == "" {
		return errors.New("到访人员名称不能为空")
	}
	if a.ContractTel == "" {
		return errors.New("到访人员联系电话不能为空")
	}
	if a.StartTime == 0 || a.EndTime == 0 {
		return errors.New("到访时间不能为空")
	}
	return nil
}

// EVQParams 列表查询使用参数
type EVQParams struct {
	EVCParams
	VisitingEnterpriseID string //访问企业id
}

// FrequentlyVisitor 企业管理员的常用访客管理
type FrequentlyVisitor struct {
	ID              int64            `bson:"_id"`              //	mongodb:id
	RecordID        string           `bson:"record_id"`        //	uuid
	UserID          string           `bson:"user_id"`          //	企业管理员id
	FrequentlyItems []FrequentlyItem `bson:"frequently_items"` //	常用访客列表
	Status          int              `bson:"status"`           //	状态1->正常2->作废
	Creator         string           `bson:"creator"`          //	创建人id
	Created         int64            `bson:"created"`          //	创建时间戳
	Deleted         int64            `bson:"deleted"`          //	删除时间戳
}

// FrequentlyItem 访客参数
type FrequentlyItem struct {
	Name string `bson:"personnel_name"` //	访客名字
	Tel  string `bson:"contract_tel"`   //	访客电话
}

// ApiEVQParams 访客查询参数
type ApiEVQParams struct {
	LastID        int    //	lastID
	PageSize      int    //	列表大小
	IsCome        int    //	到访类型:0->未到访1->到访
	PersonnelName string //	查询名称
	EnterpriseID  string //	用户record_id
}
